Welcome to HySoP’s webpage!


HySoP (Hybrid Simulation with Particles) is a library dedicated to high performance direct numerical simulation of fluid related problems based on semi-lagrangian particle methods, for hybrid architectures providing multiple compute devices including CPUs, GPUs or MICs.

Source code is available at: https://gricad-gitlab.univ-grenoble-alpes.fr/particle_methods/hysop

Programming elements

The high level functionalities and the user interface are mainly written in Python using the object oriented programming model.

This choice was made because of the large software integration benefits it can provide. Moreover, the object oriented programming model offers a flexible framework to implement scientific libraries when compared to the imperative programming model. It is also a good choice for the users as the Python language is easy to use for beginners while experienced programmers can pick it up very quickly. The numerical solvers are mostly implemented using compiled languages such as Fortran, C/C++, or OpenCL for obvious performance reasons. It is also possible to implement numerical algorithms using directly Python, which is an interpreted language, hence slower for critical code paths under heavy arithmetic or memory load. The Python language support is however the key for rapid development cycles of experimental features. It also allows to easily implement routines that compute simulation statistics during runtime, relieving most of the user post-processing efforts and enabling live simulation monitoring.

The compiled Fortran and C++ compute backends allow us to integrate a variety of external dependencies by connecting them to the main HySoP python module with interface wrappers such as F2PY or SWIG. Note that many scientific libraries already provide Python interfaces so that they can be directly used in python without needing the user to implement his own wrapper. In addition to the compiled languages, the library offers the possibility to compile generated code just-in-time during execution. This is the case for OpenCL, the language used to drive OpenCL-compatible accelerators, like GPUs, but also to translate python methods to fast machine code by using the Numba just-in-time compiler.


HySoP has been used to produce numerical results in the following references: